#ifndef   TMX_HANDLER_HPP_INCLUDED
#define   TMX_HANDLER_HPP_INCLUDED

#include <SFML/Graphics.hpp>
#include <GQE/Core/Core_types.hpp>
#include <GQE/Core/interfaces/TAssetHandler.hpp>
#include "TmxAsset.hpp"
/// Provides the TmxHandler class.
class TmxHandler : public GQE::TAssetHandler<Tmx::Map>
{
  public:
    /**
     * ImageHandler constructor
     */
    TmxHandler();

    /**
     * ImageHandler deconstructor
     */
    virtual ~TmxHandler();

  protected:
    /**
     * LoadFromFile is responsible for loading theAsset from a file and must
     * be defined by the derived class since the interface for TYPE is
     * unknown at this stage.
     * @param[in] theAssetID of the asset to be loaded
     * @param[in] theAsset pointer to load
     * @return true if the asset was successfully loaded, false otherwise
     */

    virtual bool LoadFromFile(const GQE::typeAssetID theAssetID,Tmx::Map& theMap);

    /**
     * LoadFromMemory is responsible for loading theAsset from memory and
     * must be defined by the derived class since the interface for TYPE is
     * unknown at this stage.
     * @param[in] theAssetID of the asset to be loaded
     * @param[in] theAsset pointer to load
     * @return true if the asset was successfully loaded, false otherwise
     */
    virtual bool LoadFromMemory(const GQE::typeAssetID theAssetID, Tmx::Map& theMap);
    /**
     * LoadFromNetwork is responsible for loading theAsset from network and
     * must be defined by the derived class since the interface for TYPE is
     * unknown at this stage.
     * @param[in] theAssetID of the asset to be loaded
     * @param[in] theAsset pointer to load
     * @return true if the asset was successfully loaded, false otherwise
     */
    virtual bool LoadFromNetwork(const GQE::typeAssetID theAssetID,Tmx::Map& theMap);

  private:

}; // class TmxHandler
#endif // CORE_IMAGE_MANAGER_HPP_INCLUDED
